package com.black.contracts.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.black.common.annotation.Excel;
import com.black.common.core.domain.BaseEntity;

/**
 * 租赁合同对象 tb_contracts
 * 
 * @author gugu
 * @date 2024-10-13
 */
public class Contracts extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 合同ID */
    private Long contractId;

    /** 房间ID */
    @Excel(name = "房间ID")
    private Long roomId;

    /** 租客姓名 */
    @Excel(name = "租客姓名")
    private String tenantName;

    /** 租客身份证号 */
    @Excel(name = "租客身份证号")
    private String tenantIdNumber;

    /** 租客电话 */
    @Excel(name = "租客电话")
    private String tenantPhone;

    /** 房东姓名 */
    @Excel(name = "房东姓名")
    private String landlordName;

    /** 房东身份证号 */
    @Excel(name = "房东身份证号")
    private String landlordIdNumber;

    /** 房东电话 */
    @Excel(name = "房东电话")
    private String landlordPhone;

    /** 租期开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "租期开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 租期结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "租期结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    /** 每月租金 */
    @Excel(name = "每月租金")
    private BigDecimal monthlyRent;

    /** 押金 */
    @Excel(name = "押金")
    private BigDecimal deposit;

    /** 每月租金支付日期 */
    @Excel(name = "每月租金支付日期")
    private Long paymentDate;

    /** 支付方式 */
    @Excel(name = "支付方式")
    private String paymentMethod;

    /** 水电费等其他费用的承担方式 */
    @Excel(name = "水电费等其他费用的承担方式")
    private String utilityResponsibility;

    /** 房屋使用规定 */
    @Excel(name = "房屋使用规定")
    private String usageRestrictions;

    /** 维修责任 */
    @Excel(name = "维修责任")
    private String maintenanceTerms;

    /** 合同终止条件 */
    @Excel(name = "合同终止条件")
    private String terminationConditions;

    /** 其他特殊约定 */
    @Excel(name = "其他特殊约定")
    private String specialClauses;

    /** 合同状态 */
    @Excel(name = "合同状态")
    private String status;

    /** 合同创建时间 */
    private Date createdAt;

    /** 合同最后更新时间 */
    private Date updatedAt;

    public void setContractId(Long contractId) 
    {
        this.contractId = contractId;
    }

    public Long getContractId() 
    {
        return contractId;
    }
    public void setRoomId(Long roomId) 
    {
        this.roomId = roomId;
    }

    public Long getRoomId() 
    {
        return roomId;
    }
    public void setTenantName(String tenantName) 
    {
        this.tenantName = tenantName;
    }

    public String getTenantName() 
    {
        return tenantName;
    }
    public void setTenantIdNumber(String tenantIdNumber) 
    {
        this.tenantIdNumber = tenantIdNumber;
    }

    public String getTenantIdNumber() 
    {
        return tenantIdNumber;
    }
    public void setTenantPhone(String tenantPhone) 
    {
        this.tenantPhone = tenantPhone;
    }

    public String getTenantPhone() 
    {
        return tenantPhone;
    }
    public void setLandlordName(String landlordName) 
    {
        this.landlordName = landlordName;
    }

    public String getLandlordName() 
    {
        return landlordName;
    }
    public void setLandlordIdNumber(String landlordIdNumber) 
    {
        this.landlordIdNumber = landlordIdNumber;
    }

    public String getLandlordIdNumber() 
    {
        return landlordIdNumber;
    }
    public void setLandlordPhone(String landlordPhone) 
    {
        this.landlordPhone = landlordPhone;
    }

    public String getLandlordPhone() 
    {
        return landlordPhone;
    }
    public void setStartDate(Date startDate) 
    {
        this.startDate = startDate;
    }

    public Date getStartDate() 
    {
        return startDate;
    }
    public void setEndDate(Date endDate) 
    {
        this.endDate = endDate;
    }

    public Date getEndDate() 
    {
        return endDate;
    }
    public void setMonthlyRent(BigDecimal monthlyRent) 
    {
        this.monthlyRent = monthlyRent;
    }

    public BigDecimal getMonthlyRent() 
    {
        return monthlyRent;
    }
    public void setDeposit(BigDecimal deposit) 
    {
        this.deposit = deposit;
    }

    public BigDecimal getDeposit() 
    {
        return deposit;
    }
    public void setPaymentDate(Long paymentDate) 
    {
        this.paymentDate = paymentDate;
    }

    public Long getPaymentDate() 
    {
        return paymentDate;
    }
    public void setPaymentMethod(String paymentMethod) 
    {
        this.paymentMethod = paymentMethod;
    }

    public String getPaymentMethod() 
    {
        return paymentMethod;
    }
    public void setUtilityResponsibility(String utilityResponsibility) 
    {
        this.utilityResponsibility = utilityResponsibility;
    }

    public String getUtilityResponsibility() 
    {
        return utilityResponsibility;
    }
    public void setUsageRestrictions(String usageRestrictions) 
    {
        this.usageRestrictions = usageRestrictions;
    }

    public String getUsageRestrictions() 
    {
        return usageRestrictions;
    }
    public void setMaintenanceTerms(String maintenanceTerms) 
    {
        this.maintenanceTerms = maintenanceTerms;
    }

    public String getMaintenanceTerms() 
    {
        return maintenanceTerms;
    }
    public void setTerminationConditions(String terminationConditions) 
    {
        this.terminationConditions = terminationConditions;
    }

    public String getTerminationConditions() 
    {
        return terminationConditions;
    }
    public void setSpecialClauses(String specialClauses) 
    {
        this.specialClauses = specialClauses;
    }

    public String getSpecialClauses() 
    {
        return specialClauses;
    }
    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }
    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }
    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("contractId", getContractId())
            .append("roomId", getRoomId())
            .append("tenantName", getTenantName())
            .append("tenantIdNumber", getTenantIdNumber())
            .append("tenantPhone", getTenantPhone())
            .append("landlordName", getLandlordName())
            .append("landlordIdNumber", getLandlordIdNumber())
            .append("landlordPhone", getLandlordPhone())
            .append("startDate", getStartDate())
            .append("endDate", getEndDate())
            .append("monthlyRent", getMonthlyRent())
            .append("deposit", getDeposit())
            .append("paymentDate", getPaymentDate())
            .append("paymentMethod", getPaymentMethod())
            .append("utilityResponsibility", getUtilityResponsibility())
            .append("usageRestrictions", getUsageRestrictions())
            .append("maintenanceTerms", getMaintenanceTerms())
            .append("terminationConditions", getTerminationConditions())
            .append("specialClauses", getSpecialClauses())
            .append("status", getStatus())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .toString();
    }
}
